// 云函数入口文件
const cloud = require('wx-server-sdk')

const request = require('request-promise')

cloud.init()

// 连接数据库
const db = cloud.database();
// 创建集合
const playListCollection = db.collection("playList")
// 封装请求url
const BASE_URL = "http://www.hjmin.com/personalized/playList"

// 最大请求条数
const MAX_LIMIT = 100;
// 云函数入口函数
exports.main = async (event, context) => {

// 获取数据集合中有多少条数据
const countObject = await playListCollection.count()
// 获取总条数
const total = countObject.total
// 循环次数
const intervalNumber =Math.ceil(total/MAX_LIMIT);
let playList = []
for(let i=0; i<intervalNumber;i++){
  //1.获取到当前数据库中原有的数据
  await playListCollection
  .skip(i*MAX_LIMIT) // 从第几条开始向后查询
  .limit(MAX_LIMIT) // 此次查询条数
  .orderBy("createTime","desc") // 对数据做排序
  .get() // 获取数据
  .then(res => { // 获取成功
    // 数组拼接 concat()方法
    playList = playList.concat(res.data)
  })
}
  //获取数据
  const list = await request(BASE_URL).then(res => {
    // res 是一个字符串 需要转换为json对象
    return JSON.parse(res).result
  }).catch(err => {
    console.log(err);
  })  

//2.去重
  const newlist = [];
  for(let i=0;i<list.length;i++){
    let flag = true;// 代表不重复
    for(let j=0; j<playList.length;j++){
      if(list[i].id === playList[j].id){
        flag = false; // 代表重复
        break;//终止循环
      }
    }
    if(flag){
      newlist.push(list[i])
    }
  }


  for(let i=0;i<newlist.length;i++){
     // 将数据添加到数据库中
  await playListCollection.add({
    data:[
      {
        // list[i] 这个对象的每个属性及对应的值。赋值给包裹他的对象
        ...newlist[i], // ... 扩展运算符  可以对数组或者对象做结构
        createTime:db.serverDate()
      }
    ]
  })

    // list[i].createTime = db.serverDate();
  };

  // 返回添加的数量
  return newlist.length
}